package com.bd.scm.domain.models.timeCard;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

@Data
public class TimeCard implements Serializable {
    /**
     * id
     */
    private Long id;

    /**
     * 用户ID
     */
    private Long userSerial;

    /**
     * 工号
     */
    private String userNo;

    /**
     * 姓名
     */
    private String userName;

    /**
     * 部门ID
     */
    private Long deptId;

    /**
     * 部门名称
     */
    private String deptName;

    /**
     * 日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date cardDate;

    /**
     * 星期几
     */
    private String cardWeek;

    /**
     * 班次类型ID
     */
    private Integer shiftId;

    /**
     * 班次类型
     */
    private String shiftName;

    /**
     * 上班开始时间
     */
    private Integer shiftBegin;

    /**
     * 下班结束时间
     */
    private Integer shiftEnd;

    /**
     * 上班打卡时间
     */
    private Integer swipeBegin;

    /**
     * 0：不是
     * 1：是
     */
    private Integer swipeBeginRepair;

    /**
     * 下班打卡时间
     */
    private Integer swipeEnd;

    /**
     * 0：不是
     * 1：是
     */
    private Integer swipeEndRepair;

    /**
     * 应出小时数
     */
    private Integer shouldHours;

    /**
     * 出勤计算小时数
     */
    private Integer shouldHoursCalc;

    /**
     * 实出小时数
     */
    private Integer actualHours;

    /**
     * 实出勤天数单位小时数
     */
    private Integer actualHoursCalc;

    /**
     * 总工时
     */
    private Integer totalHours;

    /**
     * 考勤状态
     */
    private Integer status;

    /**
     * 中班次数
     */
    private Integer shiftMiddleCount;

    /**
     * 夜班次数
     */
    private Integer shiftNightCount;

    /**
     * 待处理时间
     */
    private Integer pendingHours;

    /**
     * 加班单ID
     */
    private Integer otBillId;

    /**
     * 加班状态
     */
    private Integer otBillStatus;

    /**
     * 加班类型ID
     */
    private Integer otTypeId;

    /**
     * 加班类型名称
     */
    private String otTypeName;

    /**
     * 加班开始时间
     */
    private Integer otBegin;

    /**
     * 加班结束时间
     */
    private Integer otEnd;

    /**
     * 加班申请小时数
     */
    private Integer otHours;

    /**
     * 加班是否就餐
     */
    private Integer otIsEating;

    /**
     * 加班待确认工时
     */
    private Integer otPendingHours;

    /**
     * 加班已确认工时
     */
    private Integer otPendingHoursConfirm;

    /**
     * 平时加班小时数
     */
    private Integer otNormalHours;

    /**
     * 周末加班小时数
     */
    private Integer otWeekendHours;

    /**
     * 法定节假日加班小时数
     */
    private Integer otHolidayHours;

    /**
     * 加班转补休小时数
     */
    private Integer otToRestHours;

    /**
     * 请假类型
     */
    private String leaveType;

    /**
     * 请假时长文本
     */
    private String leaveHours;

    /**
     * 请假总时长
     */
    private Integer leaveHoursTotal;

    /**
     * 请假单ID
     */
    private Integer leaveBillId;

    /**
     * 考勤封账状态
     * 0：未处理
     * 1：考勤卡封账
     * 2：HR封账
     */
    private Integer lockStatus;

    /**
     * 考勤员ID
     */
    private String lockCheckerId;

    /**
     * 考勤员封账操作时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date lockCheckerTime;

    /**
     * HR ID
     */
    private String lockHrId;

    /**
     * HR封账操作时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date lockHrTime;

    /**
     * 打卡签到开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date signBegin;

    /**
     * 打卡签退时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date signEnd;

    /**
     * 是否已经打卡
     */
    private Integer isSwipe;

    /**
     * 0:自动计算
     * 1:补出勤
     * 2:请假
     * 3:加班
     * 4:排班
     */
    private Integer opFlag;

    /**
     * 是否已经加班确认过
     */
    private Integer ifOperation;

    /**
     * 月度汇总表中的加班就餐
     */
    private Integer otAllowance;

    /**
     * 考勤年份
     */
    private Integer cardYear;

    /**
     * 考勤月份
     */
    private Integer cardMonth;

    /**
     * 中班津贴1
     */
    private BigDecimal shiftAllowanceZb1;

    /**
     * 中班津贴2
     */
    private BigDecimal shiftAllowanceZb2;

    /**
     * 夜班津贴
     */
    private BigDecimal shiftAllowanceYb;

    /**
     * 工作日历
     */
    private Integer workCalendar;

    /**
     * 工作日历状态
     * 0：工作日
     * 1：双休
     * 2：节假
     */
    private Integer workStatus;

    /**
     *
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date swipeDateBegin;

    /**
     *
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date swipeDateEnd;

    private static final long serialVersionUID = 1L;
}

